/*
 * CCompartirTemaSingle.cpp - Grupo 5 - Prog. Avanzada 2011
 *
 *  Javier Dominguez - 4.901.161-6
 *  Marcelo Parada - 1.977.094-9
 *  Rodrigo Ruiz - 4.481.611-2
 *  Maximiliano Silvera - 4.106.938-6
 */

#include "CCompartirTemaSingle.h"

CCompartirTemaSingle::CCompartirTemaSingle()
{
}

void CCompartirTemaSingle::crearArtista(ArtistaDT *artistaDT)
{
	if(HElemento::getInstance()->obtenerArtista(artistaDT->getNombre()) != NULL)
	{
		throw string("Ya existe un artisa con ese nombre.");
	}

	HElemento::getInstance()->crearArtista(artistaDT);
}

int CCompartirTemaSingle::crearSingle(SingleDT *singleDT)
{
	if(HElemento::getInstance()->obtenerSinglePorTitulo(singleDT->getTitulo()) != NULL)
	{
		throw string("Ya existe un single con ese nombre.");
	}

	return HElemento::getInstance()->crearTema(singleDT);
}

void CCompartirTemaSingle::asociarArtistaTema(ArtistaDT *artistaDT, TemaDT *temaDT)
{
	HElemento::getInstance()->asociarArtistaTema(artistaDT, temaDT);
}

ArtistaDT *CCompartirTemaSingle::obtenerArtista(string nombre)
{
	Artista *artista = HElemento::getInstance()->obtenerArtista(nombre);

	if(artista != NULL)
	{
		if(artista->tipoArtista() == Solista::TIPO_ARTISTA)
		{
			Solista *solista = (Solista*) artista;

			return new SolistaDT(solista->getNombre());
		}
		else if(artista->tipoArtista() == Banda::TIPO_ARTISTA)
		{
			Banda *banda = (Banda*) artista;

			return new BandaDT(banda->getNombre(), banda->getIntegrantes());
		}
	}

	return NULL;
}

CCompartirTemaSingle::~CCompartirTemaSingle()
{
}
